/*
 * 继承: 子类继承父类的属性和方法
 *   目的: 可以让子类的 实例 能够调用父类的属性和方法
 *   A: 父类 Parent Super
 *   B: 子类 Child
 * */

// 方案三: 寄生组合继承
// 特点: 父类私有的和公有的属性和方法,分别就是子类私有的和公有的方法

function A(x) {
    this.x = x;
}
A.prototype.getX = function(){
    console.log(this.x);
};

function B(y) {
    A.call(this, 200);
    this.y = y;
}

// ===> ES6   Object.create(OBJ) 创建一个空对象,并且让空对象的__proto__指向传递的第一个参数(OBJ)
B.prototype = Object.create(A.prototype); //寄生组合继承

// B.prototype = new A(200); //组合继承
B.prototype.constructor = B;
B.prototype.getY = function(){
    console.log(this.y);
};

let b1 = new B(100);
console.log(b1);


/*

Object.create = function (obj) {
    // let OBJ = {};
    // OBJ.__proto__ = obj;
    // return OBJ

    function Fn() {}
    Fn.prototype = obj;
    return new Fn()
};*/
